﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace IOC_Conception_Simple_Example
{
    public class IOCContainer
    {
        List<InjectAttribute> attributes = new List<InjectAttribute>();
        public IOCContainer()
        {
            //加载程序集信息,注意替换为自己的
            System.Reflection.Assembly asm =
           System.Reflection.Assembly.Load("IOC_Conception_Simple_Example, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null");
            //得到所有自定义的类型
            Type[] types = asm.GetExportedTypes(); 

            // 验证指定自定义属性
            Func<System.Attribute[], bool> IsAtt1 = o =>
            {
                foreach (System.Attribute a in o)
                {
                    if (a is InjectAttribute)
                        return true;
                }
                return false;
            };

            //查找具有 Attribute.Atts.Att1 特性的类型（使用的是 linq 语法）
            Type[] CosType = types.Where(o =>
            {
                return IsAtt1(System.Attribute.GetCustomAttributes(o, true));
            }).ToArray();
            Console.WriteLine(CosType);
        }
        public void Bind<T, K>()
        {

        }
    }
}
